<?php
/**
 * @todo для cli запросов нужен свой загрузчик.
 * 
 * Создавая в данном классе методы _init* (пример _intiView)
 * мы создаем методы которые будут запущены автоматичекси
 * в системе, порядо создавания методов определяет их поочередность запуска.
 * 
 * @author nrnwest@gmail.com
 *
 */
class CliBootstrap extends Zend_Application_Bootstrap_Bootstrap
{

    /**
     * Иницилизация php параметров.
     */
    protected function _initPHPparams()
    {
    	$config = Arm_Core::getConfigApplication();
        iconv_set_encoding('internal_encoding', $config->system->charset);
        mb_internal_encoding($config->system->charset);
        date_default_timezone_set($config->system->timezone);
    }
    

    /**
     * Иницлизация Zend_View
     *
     * @return Zend_View
     */
    protected function _initRemoveActionHelper ()
    {
        Zend_Controller_Action_HelperBroker::removeHelper('ViewRenderer');    
   }
    
    /**
     * Если происходит cli запрос нужно выполнить преобразования урла.
     *
     */
    protected function _initCliRequest()
    {   
        $uri = $this->_getCliUrlRequest();
        if($uri === null) {
            throw new Arm_Exception('Bad Request, example: "php index.php /module/controller/action/"');
        }
        $request = new Zend_Controller_Request_Http();
        $request->setRequestUri($uri);
        Zend_Controller_Front::getInstance()->setRequest($request); 
        return;
    }
    

    
    /**
     * Создает урл запроса к системе. на основе cli запроса.
     * php index.php /index.php /module/contrller/action/
     * 
     */
    protected function _getCliUrlRequest()
    {
       if(false === array_key_exists(1, $_SERVER['argv'])) {
            return null;
        }
        return $_SERVER['argv'][1];
    }

    

    /**
     * Иницилизация трансляции - переводчика
     * Плюс регистрация его в регистре.
     */
    protected function _initTranslate()
    {
        $translate = Arm_Translate::getInstance();
        Zend_Validate_Abstract::setDefaultTranslator($translate->getAdapter());
        return;
    }
    
    /**
     * Иницилизация соединения с базой данных.
     */
    protected function _initDb()
    {
        Zend_Db_Table_Abstract::setDefaultAdapter(Arm_Db::getAdapter());
        Zend_Db_Table::setDefaultMetadataCache(Arm_Cache::getInstance()->getFrontendCore());    
    }
    

   
    
    /**
     * Регистрация плагинов контролеров в системе.
     */
    protected function _initPluginController()
    {     
        Zend_Controller_Front::getInstance()->registerPlugin(new Arm_Controller_Plugin_CliBootstrap());
    }
    
    
}

